/*
 * Blocker.h
 *
 * @author Bematech S.A.
 */

#ifndef __BILBAO_UTIL_BLOCKER_CLASS_H__
#define __BILBAO_UTIL_BLOCKER_CLASS_H__

#include "bilbao/types.h"

/**
 * singleton
 */
namespace bilbao
{
	namespace util
	{
		class Blocker
		{
		public:

			/**
			 *
			 */
			static Blocker* getInstance( void );

			/**
			 * Destrutor
			 */
			virtual ~Blocker(void);

			/**
			 * Bloqueia equipamento para fins fiscais
			 */
			void blockForTaxPurposes();

			/**
			 * Bloqueia equipamento temporariamente
			 */
			void blockTemporaly();

			/**
			 *
			 */
			void checkTemporaryBlock();

			/**
			 *
			 */
			inline void zerarNumeroTentativasCodigoAtivacao( void ) { numeroTentativasCodigoAtivacao = 0; }

		protected:
			/**
			 *
			 */
			static Blocker* _instance;

			/**
			 *
			 */
			static int numeroTentativasCodigoAtivacao;

			/**
			 * Construtor
			 */
			Blocker( void );
		};

	} // namespace util

} // namespace bilbao

#endif //__BILBAO_UTIL_BLOCKER_CLASS_H__

